/*
基本类型：
number、string、boolean、symbol、null、undefined

根类型：
Object、{}

对象类型：
Array、object、function

枚举：
enum

其他特殊类型：
any、unknown、never、void、tuple(元组)、可变元组

合成类型：
联合类型、交叉类型

字面量数据类型：

*/

let data1: Object = 3;
let data2: {} = 3;

let data3: object = {age: 23};

// 联合类型
let str: string | number = "abc";
str = 3;

// 交叉类型
type Obj1={ username: string}
type Obj2={ age: number}
let obj: Obj1 & Obj2 = {username: "张三", age: 18};

// 字面量数据类型
type increaseFlag = 0 | 1;
function isStartUp(increase: increaseFlag) {
    if (increase === 0) {
        console.log("启动");
    }else {
        console.log("停止");
    }
}

isStartUp(0)
isStartUp(1)
// TS2345: Argument of type '2' is not assignable to parameter of type 'increaseFlag'.
// isStartUp(2)
